System for providing extensible location-based services

ABSTRACT

A system for providing location-based services to a mobile device regularly determines the location of the mobile device. Using the device location, the system queries a database of virtual geographic regions to determine if the location of the mobile device falls within one or more of the virtual geographic regions. The virtual geographic regions correspond to service entities that have purchased, rented, leased, or otherwise acquired the virtual geographic regions. If the mobile device is within a virtual geographic region, the system notifies the mobile device. A location-based services application installed on the mobile device launches an applet for the entity that acquired the virtual geographic region within which the mobile device is located. When the mobile device is located within overlapping virtual geographic regions, the system generates a prioritization scheme that defines which of the corresponding service entities should be displayed on the mobile device, and in what order.

BACKGROUND Technical Field

This application relates to mobile applications. In particular, thisapplication relates to a system for providing extensible location-basedservices to a mobile device.

BRIEF DESCRIPTION OF THE DRAWINGS

The system may be better understood with reference to the followingdrawings and description. The elements in the figures are notnecessarily to scale, emphasis instead being placed upon illustratingthe principles of the type model. In the figures, like-referencednumerals designate corresponding features throughout the differentviews.

FIG. 1 shows an example of an architecture for providing an extensiblelocation-based services to a mobile device.

FIG. 2 shows examples of virtual geographic regions that are defined ascircles.

FIG. 3 shows examples of virtual geographic regions that are defined aspolygons.

FIG. 4 shows an example of an applet interface displayed by thelocation-based mobile application installed on a mobile device.

FIGS. 5-7 show another example of an applet launched on a mobile device.

FIG. 8 is an example of process a location-based services system mayimplement for providing location-based services to a mobile device.

FIG. 9 shows a mobile device displaying an applet window that includesmultiple service entities.

FIG. 10 shows a mobile device displaying an applet window that may bedisplayed when the mobile device is not located within a virtualgeographic region.

DETAILED DESCRIPTION

FIG. 1 shows an example of an architecture 100 for providing anextensible location-based services to a mobile device. The architecture100 includes a mobile device 102 equipped with a location-based serviceapplication, a location-based services system 104, a location-basedservices database 106, and service entities 108, 110, 112, each of whichmay communicate via a communications network 114. The mobile device 102may be a cellular phone, tablet, smart phone, PDA or other mobilecommunication device configured to access the internet. The mobiledevice 102 has installed thereon a location-based services applicationconfigured to communicate with the system 104.

The communications network 114 may be any private or publiccommunications network or combination of networks. The communicationsnetwork 114 may be configured to couple a computing device, such as aserver, system, database, or other network enabled device, to anotherdevice to enable communication of data between computing devices. Thecommunications network 114 may generally be enabled to employ any formof computer-readable media for communicating information from onecomputing device to another. The communications network 114 may includeone or more of a wireless network, a wired network, a local area network(LAN), a wide area network (WAN), a direct connection such as through aUniversal Serial Bus (USB) port, and the like, and may include the setof interconnected networks that make up the Internet. The communicationsnetwork 114 may include any communication method by which informationmay travel between computing devices.

The service entities 108, 110, 112 each correspond to a vender of goodsor services that purchased, rented, leased, or otherwise acquiredvirtual geographic regions from the provider of the location-basedservices system. The database 106 may store data corresponding to thevirtual geographic region(s) of each service entity 108, 110, 112. Themobile device 102 transmits location data to the system 104 via thecommunications network. Based on the location data, the system 104determines whether the location of the mobile device 102 falls in theproximity of the virtual geographic region of one or more of the serviceentities 108, 110, 112. If the location of the mobile device 102 fallsin the proximity of the virtual geographic region of one of the serviceentities 108, 110, 112, the system 104 notifies the location-basedservices application installed on the mobile device 102. The applicationlaunches an applet corresponding to the identified service entity. Theapplet may access and load HTML-based pages corresponding to theidentified service entity, which may provide sales information, productlists, coupons, a map of a nearby store, phone number, hours ofoperation, and other information corresponding to the service entity.

If the location of the mobile device 102 falls in the proximity of thevirtual geographic regions of multiple service entities 108, 110, 112,the system 104 may execute a conflict resolution process to determinethe multiple service entity about which to notify the mobile device 102.In another example, the application may be configured to display a menuto a user that prompts the user to select which of the identifiedservice entity applets to launch. In this example, the conflictresolution process may include a determination of what order to list theidentified multiple service entities on the menu, or whether to omit anyof the identified service entities from the menu.

If the location of the mobile device 102 does not fall within theproximity of the virtual geographic region of any service entity, thesystem 104 may determine whether there are any service entitiescorresponding to nearby virtual geographic region about which to notifythe user of the mobile device 102.

FIGS. 2-3 show a map 200 including examples of virtual geographicregions that may be purchased, rented, leased, or otherwise acquired bya service entity. FIG. 2 shows examples of virtual geographic regions202 and 204 that are defined as circles. In particular, the geographicregions 202 and 204 may be defined by a geographic coordinate (e.g.,longitude and latitude) and a radius. In FIG. 2 region 204 is defined bya larger radius than region 202.

FIG. 3 shows examples of virtual geographic regions 302 and 304 that aredefined as polygons. The polygons may be defined by geographiccoordinates. For example, six geographic coordinates may form a sixsided polygon region. Borders of the virtual geographic regions may alsobe defined, partly or wholly, by pre-defined geographic regions such asa zip code, city limit, etc. The virtual geographic region may bedefined by a combination of the above examples as well.

The boundaries of the virtual geographic regions may be defined by theservice entity purchasing, renting or leasing the region. For example,the service entity may select the geographic coordinate and radiusdefining their circular virtual geographic region, or may select thegeographic coordinates defining the polygonal virtual geographic region.Monetization of the virtual geographic regions may be based on area aswell as location. For example, a region covering more area may cost morethan a smaller region. As another example, a region in a denselypopulated area may cost more than a region of the same size in a lesspopulated area.

Virtual geographic regions corresponding to different service entitiesmay overlap. When a mobile device enters an area covered by multiplevirtual geographic regions, the location-based services system mayperform conflict resolution, which is discussed in more detail below. Inaddition, a service entity may also purchase exclusive rights to aparticular virtual geographic region.

FIG. 4 shows an example of an applet interface 400 displayed by thelocation-based mobile application installed on a mobile device 402. Inthis example the mobile device 402 was determined to be within a virtualgeographic region corresponding to a coffee shop. The location-basedservices system notifies the application installed on the mobile device402 that the device 402 is within the identified virtual geographicregion and launces the applet and displays the applet interface 400corresponding to the coffee shop. The display 402 may be an initialapplet window displayed when the corresponding applet is launched. Theinitial applet window provides the user includes menu items 404, 406 and408. The applet may allow the user to view the menu (menu item 406) andplace an order. The applet may allow the user of the mobile device 402to order the usual (menu item 404). The applet may collect purchasingdata about the user's purchases at this coffee shop, or at coffee shopsin general to determine what order to place when the user clicks on the“Order the Usual” menu item 404. In another example, the applet mayallow the user to manually input a product that is purchased when theuser clicks on the menu item 404. The applet may also allow the user todetermine what music is playing in the corresponding coffee shot (menuitem 408).

FIGS. 5-7 show another example of an applet launched on a mobile device500. In this example the mobile device 500 is determined to be within avirtual geographic region corresponding to an electronics store. FIG.500 shows that the subsequently launched applet may provide a layout 502of the nearby retail store. FIG. 6 shows that the applet may overlay asales or promotion indicator 602 over the layout. The indicator 602 mayindicate a location within the store of a sale or promotion. If the userselects the indicator 602, the applet may display a sale or promotionwindow 702, as shown in FIG. 7. The applet may integrate with theelectronics store's website to enable the user to make purchases fromthe retail store using the applet.

FIG. 8 is an example of process 800 a location-based services system mayimplement for providing location-based services to a mobile device. Thedisclosed methods, processes, programs, and/or instructions may beencoded in a signal-bearing medium, a computer-readable medium such as amemory, programmed within a device such as on one or more integratedcircuits, or processed by a controller or a computer processor. If themethods are performed by software, the software may reside in a memoryresident to or interfaced to a communication interface, or any othertype of non-volatile or volatile memory. The memory may include anordered listing of executable instructions for implementing logicalfunctions. A logical function may be implemented through digitalcircuitry, through source code, through analog circuitry, or through ananalog source such as that occurring through an analog electrical,audio, or video signal. The software may be embodied in anycomputer-readable or signal-bearing medium, for use by, or in connectionwith, an instruction executable system, apparatus, or device. Such asystem may include a computer-based system, a processor-containingsystem, or another system that may selectively fetch instructions froman instruction executable system, apparatus, or device that may alsoexecute instructions.

The system receives location data from a mobile device equipped with alocation-based services application (step 802). The location data may begeographic coordinates (e.g., longitude and latitude), identification ofa geographic sector in which the mobile device is located,identification of the nearest base station, coordinates determined viatriangulation, or other location data corresponding to other knownmobile device location techniques.

Based on the location data, the system determines whether the locationof the mobile device is within the virtual geographic region purchased,rented, leased, or otherwise acquired by a subscribing service entity(step 804). The system may compare the location of the mobile devicewith the virtual geographic regions stored in a database to determinewhether the mobile device location falls within the virtual geographicregion. If the system determines that the mobile device is not within avirtual geographic region, the system determines whether there areother, nearby virtual geographic regions that might be of interest tothe user of the mobile device (step 806). The system may, for example,notify the application installed on the mobile device of the nextclosest virtual geographic region. The system may also compare thedistance between the next closest virtual geographic region against athreshold, such that the system will not notify the application of thenext closest virtual geographic region if the virtual geographic regionis greater than a threshold distance (e.g., 5 miles, 25 miles, etc.)from the location of the mobile device.

The system may determine that, as another example, based on thedirection of the mobile device, the mobile device is approaching aparticular virtual geographic region and the system may notify theapplication installed on the mobile device to launch the correspondingapplet even before the mobile device passes into the virtual geographicregion.

If the system determines that there no other, nearby virtual geographicregions about which to notify the application, the application does notlaunch an applet and the system continues to obtain new location data ofthe mobile device (step 802). If the system determines that there areother, nearby virtual geographic regions about which to notify theapplication, the system transmits a notification to the application(step 808). The notification may include an identification of thecorresponding service entity or other information that allows theapplication to know which applet to launch.

If in step 804 the system determines that location of the mobile devicefalls within at least one virtual geographic region, the system notifiesapplication in the case where the system identifies a one virtualgeographic region (step 810). In the case where the system identifiesmultiple virtual geographic regions corresponding to the location of themobile device, such as in the case of overlapping virtual geographicregions, the system executes conflict resolution procedures (step 812).

To resolve a conflict, the system may determine the service entities(corresponding to each of the multiple virtual geographic regions) aboutwhich to notify the mobile application, as well as prioritize theservice entities. Conflict resolution may be based on the location data,directional data (indicating the direction of movement of the mobiledevice), behavioral data about the user of the mobile device, temporaldata (e.g., the time of day), and user preferences.

If the location of the mobile device falls within two overlappingvirtual geographic regions, for example, the system may prioritize thevirtual geographic region that the mobile device is moving towards abovethe virtual geographic region that the device is moving from. Themovement or direction data may be received from the mobile device, ormay be calculated by the system based on the current location andimmediately preceding locations of the mobile device.

Prioritization of the multiple virtual geographic regions may also bebased on behavioral data. The system may collect behavioral datacorresponding to the mobile device and store the behavioral data in thedatabase. Behavioral data may include, as examples, purchasing history,location history, temporal data such as the types of purchases the usermakes at different times of the day or on different days of the week.If, for example, the mobile device is located within the vicinity of acoffee shop and a restaurant, the system may determine based on thebehavioral data that the user of the mobile device typically visitscoffee shops in the morning and restaurants in the early afternoon.Around lunch time the system may prioritize the restaurant ahead of thecoffee shop, whereas the system may prioritize the coffee shop ahead ofthe restaurant in the morning. Thus, the system may provide differentprioritization schemes based on the time of day.

Prioritization may also be based on user preferences. The applicationmay allow the user to enter preferences in regards to the types ofservices entities he/she prefers (e.g., a preference of a certainrestaurant chain over another, etc). The mobile device may transmit theuser preferences to the system, which may be stored in the database.

The system may use a log of locations and “dwell time” to generate theprioritization scheme, indicating which of the corresponding serviceentities will likely be important to the user of the mobile device. Onemethod that may be used to “score” each service entity is to sum allhistorical location data points using “time at location” (T) divided by“distance from nearest entity” (D_(X)), or

${{Score}_{X} = {\sum\frac{T}{D_{X}}}},$

where Score_(X) corresponds to a score for a given entity (X). In otherwords, for each location data point over some previous period of time,the divides the amount spent at a location divided by the distance tothe nearest entity from the location data point. In this manner, aparticular entity would have a higher score where the user has a longertime at the location, and would have a lower score where the uservisited locations that were a greater distance from the nearest entitybeing scored. The system may generate a corresponding score for each ofthe overlapping service entities. The score generated by theabove-mentioned sum may indicate which service entity the user is mostlikely to be interested in.

The system may use probability curve data based on the behavior data.The probability function P_(X) may correspond to, for example, adistribution curve indicating the number of times the user visited aparticular entity and the time of day. If a mobile device is near arestaurant and a coffee shop, the system may also rank or prioritize theentities according to the following function:Rank_(X)=V_(X)*P_(X)(t)+S_(X), where V_(X) corresponds to the number ofvisits, P_(X)(t) corresponds to probability function at a given time andS_(X) corresponds to the entity score referenced above.

In addition, an amount of actions the user takes with reference to agiven service entity (X) may corresponds to a utility score (U_(X)),augmenting the above function in the following manner:Rank_(X)=U_(X)*V_(X)*P_(X)(t)+S_(X). Further, as discussed above, adirection of travel of the mobile device may help determine intent ofthe user, such that the function may be further augmented as follows:Rank_(X)=(U_(X)*V_(X)*P_(X)(t)+S_(X)) dot(Dir, D_(x)). In this manner,U_(X) accounts for the utility of a service entity, V_(X) accounts forrepeated use of a service entity, P_(X) accounts for the usefulness of aservice entity at a given time, S_(X) accounts for overall behavior,dot(Dir, D_(X)) accounts for direction.

Once prioritized, the system notifies application of the correspondingservice entities, along with the prioritization scheme (step 814). Thesystem is described herein as being separate from the mobile device.However, in another embodiment identification of nearby virtualgeographic regions and prioritization in the case of multipleoverlapping virtual geographic regions may be performed by the mobileapplication, taking advantage of the processing and memory capabilitiesof the mobile device. In this embodiment, the mobile device, afterdetermining its location, may query the database directly to determinewhether the location data corresponds to a virtual geographic regionpurchased, rented, leased, or otherwise acquired by a service entity.Based on the results of the query, and in the case of overlappingvirtual geographic regions, the mobile application itself may beprogrammed to determine the prioritization scheme as discussed above. Inthis example the location-based services system includes the mobiledevice.

FIG. 9 shows a mobile device 900 displaying an applet window 902 thatincludes multiple service entities, including airport services 904,airline services 906, coffee shops 908, and fast food 910. The order theservices entities are listed in the applet window 902 may be based onthe prioritization scheme determined by the system. Prioritization mayalso include grouping related service entities together. For example, ifthe mobile device is located within the virtual geographic region ofmultiple fast food service entities, the prioritization scheme may groupthe fast food service entities together such that if the user selectsthe “Fast Food” option 910, a submenu is displayed that lists each ofthe corresponding fast food service entities. As the mobile device 900moves, it may pass outside of one of the virtual geographic regions. Asthe location-based mobile application periodically updates the locationof the mobile device and transmits the updated location to the system,the system may determine that the virtual geographic regions withinwhich the mobile device is located has changed. The system generates anew prioritization scheme and transmits the new prioritization schemealong with an identification of the corresponding service entities tothe mobile device. Upon receipt of the updated data, the mobileapplication updates the applet window 902 of the mobile device 900. Inother words, as the mobile device 900 moves in and out of differentvirtual geographic regions, the mobile application may automaticallyupdate the applet window accordingly. In this manner, as the user walks,for example, through an airport, the list of service entities displayedon the applet window 902 may change. The changes may include addition orremoval of the listed service entities, as well as a reordering of thelisted service entities, as the mobile device changes location.

FIG. 10 shows a mobile device 1000 displaying an applet window 1002 thatmay be displayed when the mobile device is not located within a virtualgeographic region. The applet window 1002 includes two options including“My Lists” 1004 and “Find Services” 1006. The “My Lists” option 1004 mayinclude a list of default applets selected by the user, or determined bythe system based on user behavior (e.g., service entities mostfrequented by the user). The “Find Services” option 1006 may allow theuser to see applets corresponding to services that may not be tagged toany specific geographic location (e.g., taxis, social apps, internetretailers, etc).

Exemplary aspects, features, and components of the system are describedabove. However, the system may be implemented in many different ways.For example, although some features are shown stored incomputer-readable memories (e.g., as logic implemented ascomputer-executable instructions or as data structures in memory), allor part of the system and its logic and data structures may be storedon, distributed across, or read from other machine-readable media. Themedia may include hard disks, floppy disks, CD-ROMs, a signal, such as asignal received from a network or received over multiple packetscommunicated across the network.

The system may be implemented with additional, different, or fewercomponents. As one example, a processor may be implemented as amicroprocessor, a microcontroller, a DSP, an application specificintegrated circuit (ASIC), discrete logic, or a combination of othertypes of circuits or logic. As another example, memories may be DRAM,SRAM, Flash or any other type of memory. The processing capability ofthe system may be distributed among multiple components, such as amongmultiple processors and memories, optionally including multipledistributed processing systems. Parameters, databases, and other datastructures may be separately stored and managed, may be incorporatedinto a single memory or database, may be logically and physicallyorganized in many different ways, and may implemented with differenttypes of data structures such as linked lists, hash tables, or implicitstorage mechanisms. Logic, such as programs or circuitry, may becombined or split among multiple programs, distributed across severalmemories and processors, and may be implemented in a library, such as ashared library (e.g., a dynamic link library (DLL)). The DLL, forexample, may store code that prepares intermediate mappings orimplements a search on the mappings. As another example, the DLL mayitself provide all or some of the functionality of the system, tool, orboth.

While various embodiments of the invention have been described, it willbe apparent to those of ordinary skill in the art that many moreembodiments and implementations are possible within the scope of theinvention. Accordingly, the invention is not to be restricted except inlight of the attached claims and their equivalents.

What is claimed is:
 1. A product comprising: a memory; instructionsstored in the memory that, when executed, cause a computer processor to:determine a current location of a mobile device; determine whether thecurrent location falls within one or more virtual geographic regionacquired by a service entity that provides good or services, whereineach virtual geographic region is defined by at least one geographiccoordinate stored in a database; and based on a determination that thecurrent location falls within at least one virtual geographic region,display an applet window corresponding to the service entity thatacquired the at least one virtual geographic region on the mobiledevice.
 2. The product of claim 1, wherein the instructions, whenexecuted, further cause the computer processor to, based on adetermination that the current location falls within multipleoverlapping virtual geographic regions: generate a prioritization schemethat prioritizes service entities corresponding to each of the multipleoverlapping virtual geographic regions; and display the service entitiescorresponding to the multiple overlapping virtual geographic regions onthe mobile device according to the prioritization scheme
 3. The productof claim 2, wherein the prioritization scheme is based on behavioraldata of a user using the mobile device.
 4. The product of claim 3,wherein the behavioral data comprises temporal behavioral data.
 5. Theproduct of claim 2, wherein the instructions, when executed, furthercause the computer processor to determine a direction of movement of themobile device.
 6. The product of claim 5, wherein the prioritizationscheme is based on the direction of movement of the mobile device. 7.The product of claim 2, wherein the instructions, when executed, causethe computer processor to update the prioritization scheme as thelocation of the mobile device changes.
 8. The product of claim 1,wherein the one or more virtual geographic region is further defined bya radius extending from the at least one geographic coordinate.
 9. Theproduct of claim 1, wherein the one or more virtual geographic region isdefined by multiple geographic coordinates that define a boundary of theone or more virtual geographic region.
 10. The product of claim 1,wherein the one or more virtual geographic region is a virtual area on amap purchased by the corresponding service entity, and the at least onegeographic coordinate is defined by the corresponding service entity.11. A system for providing location-based services, comprising: acomputer processor; and a memory connected with the computer processor,the memory comprising instructions that, when executed, cause thecomputer processor to: determine a current location of a mobile device;determine whether the current location falls within one or more virtualgeographic region acquired by a service entity that provides good orservices, wherein each virtual geographic region is defined by at leastone geographic coordinate stored in a database; and based on adetermination that the current location falls within at least onevirtual geographic region, display the service entity corresponding tothe service entity that acquired the at least one virtual geographicregion on the mobile device.
 12. The system of claim 11, wherein theinstructions, when executed, further cause the computer processor to,based on a determination that the current location falls within multipleoverlapping virtual geographic regions: generate a prioritization schemethat prioritizes service entities corresponding to each of the multipleoverlapping virtual geographic regions; and display the service entitiescorresponding to the multiple overlapping virtual geographic regions onthe mobile device according to the prioritization scheme
 13. The systemof claim 12, wherein the prioritization scheme is based on behavioraldata of a user using the mobile device.
 14. The system of claim 13,wherein the behavioral data comprises temporal behavioral data.
 15. Thesystem of claim 12, wherein the instructions, when executed, furthercause the computer processor to determine a direction of movement of themobile device.
 16. The system of claim 15, wherein the prioritizationscheme is based on the direction of movement of the mobile device. 17.The system of claim 12, wherein the instructions, when executed, causethe computer processor to update the prioritization scheme as thelocation of the mobile device changes.
 18. The product of claim 11,wherein the one or more virtual geographic region is further defined bya radius extending from the at least one geographic coordinate.
 19. Thesystem of claim 11, wherein the one or more virtual geographic region isdefined by multiple geographic coordinates that define a boundary of theone or more virtual geographic region.
 20. The system of claim 11,wherein the one or more virtual geographic region is a virtual area on amap purchased by the corresponding service entity, and the at least onegeographic coordinate is defined by the corresponding service entity.21. A method for providing location-based services, comprising:determining a current location of a mobile device; determining whetherthe current location falls within one or more virtual geographic regionacquired by a service entity that provides good or services, whereineach virtual geographic region is defined by at least one geographiccoordinate stored in a database; and based on a determination that thecurrent location falls within at least one virtual geographic region,displaying an applet window on the mobile device corresponding to theservice entity that acquired the at least one virtual geographic region.22. The method of claim 21, further comprising, based on a determinationthat the current location falls within multiple overlapping virtualgeographic regions: generating a prioritization scheme that prioritizesservice entities corresponding to each of the multiple overlappingvirtual geographic regions; and displaying the service entitiescorresponding to the multiple overlapping virtual geographic regions onthe mobile device according to the prioritization scheme
 23. The methodof claim 22, wherein the prioritization scheme is based on behavioraldata of a user using the mobile device.
 24. The method of claim 23,wherein the behavioral data comprises temporal behavioral data.
 25. Themethod of claim 22, further comprising determining, using the computerprocessor, a direction of movement of the mobile device.
 26. The methodof claim 25, wherein the prioritization scheme is based on the directionof movement of the mobile device.
 27. The method of claim 22, furthercomprising updating, using the computer processor, the prioritizationscheme as the location of the mobile device changes.
 28. The method ofclaim 21, wherein the one or more virtual geographic region is furtherdefined by a radius extending from the at least one geographiccoordinate.
 29. The method of claim 21, wherein the one or more virtualgeographic region is defined by multiple geographic coordinates thatdefine a boundary of the one or more virtual geographic region.
 30. Themethod of claim 21, wherein the one or more virtual geographic region isa virtual area on a map purchased by the corresponding service entity,and the at least one geographic coordinate is defined by thecorresponding service entity.